A storage system is a processing system adapted to store and retrieve information/data on storage devices, such as disks. The storage system includes a storage operating system that implements a file system to logically organize the information as a hierarchical structure of directories and files on the disks. Each “on-disk” file may be implemented as a set of disk blocks configured to store information, such as text, whereas each directory may be implemented as a specially-formatted file in which information about other files and directories are stored.
The storage operating system generally refers to the computer-executable code operable on a storage system that manages data access and access requests and may implement file system semantics in implementations involving storage systems. In this sense, the Data ONTAP™ storage operating system, available from Network Appliance, Inc. of Sunnyvale, Calif., which implements a Write Anywhere File Layout (WAFL™) file system, is an example of such a storage operating system implemented as a microkernel within an overall protocol stack and associated disk storage. The storage operating system can also be implemented as an application program operating over a general-purpose operating system, such as UNIX® or Windows®, or as a general-purpose operating system with configurable functionality, which is configured for storage applications as described herein.
A storage system's disk storage is typically implemented as one or more storage volumes that comprise physical storage disks, defining an overall logical arrangement of storage space. Available storage system implementations can serve a large number of discrete volumes (150 or more, for example). A storage volume is “loaded” in the storage system by copying the logical organization of the volume's files, data and directories into the storage system's memory. Once a volume has been loaded in memory, the volume may be “mounted” by one or more users, applications, devices, etc. permitted to access its contents and navigate its namespace. As used herein, a volume is said to be “in use” when it is loaded in a storage system's memory and at least one user, application, etc. has mounted the volume and modified its contents.
A storage system may be configured to allow clients to access files stored on a storage system. In this model, the client may comprise an application executing on a computer that “connects” to the storage system over a computer network, such as a point-to-point link, shared local area network (LAN), wide area network (WAN), or virtual private network (VPN) implemented over a public network such as the Internet. Communications between the storage system and its clients are typically embodied as packets sent over the computer network. Each client may request the services of the storage system by issuing file-system protocol messages formatted in accordance with a conventional file-system protocol, such as the Common Internet File System (CIFS), Network File System (NFS) protocol, Fibre Channel Protocol (FCP), or Internet Small Computer System Interface (iSCSI) Storage Area Network (SAN) access.
A storage system may be also be used to implement a database system, such as an electronic message (email) database system containing email data for a plurality of clients. An email database system typically comprises database files and transaction files. The database files contain email information that has been received and fully processed by the database system and organized and stored in a particular format by the database system. Transaction files contain additional email information that has not been organized and stored in the same format as the database files by the database system. Transaction files contain email information that may or may not be currently reflected in the database files. Typically, the information contained in the transaction files are integrated into the database files according to a predetermined schedule.
A storage system is also used to implement a backup of the transaction files of the database system. The original transaction files of the database system are stored in a particular directory in the storage system. Conventionally, a backup of the transaction files includes copying all transaction files contained in the original directory and storing the copied files in an archive directory on the storage system. As such, after a backup of the transaction files, there exists a set of transaction files in the original directory and a duplicate set of transaction files in the archive directory.
Since copies of transaction files are created and stored to a second directory (the archive directory), a conventional backup of transaction files consumes significant amounts of time and resources of the storage system (e.g., it requires intensive input/output operations of the storage system and requires significant storage space). As such, there is a need for a more efficient and less resource intensive method for backing up (archiving) and restoring transaction files of a database system.